// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Author: wsfuyibing <682805@qq.com>
// Date: 2024-08-02

package base

import (
	"html/template"
)

// Column
// is a component for table definition (DDL).
type Column struct {
	Field     ItemName      `xorm:"Field"`
	Collation ItemCollation `xorm:"Collation"`
	Comment   ItemComment   `xorm:"Comment"`
	Type      ColumnType    `xorm:"Type"`
	Default   ColumnDefault `xorm:"Default"`
	Key       ColumnKey     `xorm:"Key"`
	Null      ColumnNull    `xorm:"Null"`
	Extra     ColumnExtra   `xorm:"Extra"`

	// Related on table.
	Table *Table `xorm:"-"`

	// Info fields.
	CommentList []template.HTML `xorm:"-"`
	Datetime    template.HTML   `xorm:"-"`
	Script      template.HTML   `xorm:"-"`

	// Name and type fields.
	ExportName string `xorm:"-"` // for field name. e.g. Id, UserId etc
	ExportType string `xorm:"-"` // for field type. e.g. int, db.Date, db.Datetime etc
	ExportJson string `xorm:"-"` // for field tag. e.g. id, user_id etc
	ExportOrm  string `xorm:"-"` // for field tag. e.g. id pk autoincr, user_id etc
	ExportPkg  string `xorm:"-"` // for field tag. e.g. models, services etc

	IsDate             bool `xorm:"-"`
	IsDatetime         bool `xorm:"-"`
	IsDatetimeOnUpdate bool `xorm:"-"`
	IsPrimaryKey       bool `xorm:"-"`
}
